<html>

<head>
<meta http-equiv=Content-Type content="text/html; charset=windows-1251">
<meta name=Generator content="Microsoft Word 14 (filtered)">
<style>
<!--
 /* Font Definitions */
 @font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
	{font-family:Consolas;
	panose-1:2 11 6 9 2 2 4 3 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin-top:0in;
	margin-right:0in;
	margin-bottom:10.0pt;
	margin-left:0in;
	line-height:115%;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";}
.MsoChpDefault
	{font-family:"Calibri","sans-serif";}
.MsoPapDefault
	{margin-bottom:10.0pt;
	line-height:115%;}
@page WordSection1
	{size:8.5in 11.0in;
	margin:42.5pt 42.5pt 42.5pt 70.85pt;}
div.WordSection1
	{page:WordSection1;}
-->
</style>
<script type="text/javascript">

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-1777267-5']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();

</script>
</head>

<body lang=EN-US>

<div class=WordSection1>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:green;background:white'>///</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:green;background:white'>/// \file printer_matching.cpp</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:green;background:white'>///</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:green;background:white'>/// Implementation of a C++ pretty-printer for
Pivot based on pattern matching</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:green;background:white'>///</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:green;background:white'>/// \author Yuriy Solodkyy</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:green;background:white'>/// Copyright (C) 2011, Texas A&amp;M
University.&nbsp; All rights reserved.</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:green;background:white'>///</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>#include</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;printer_matching.hpp&quot;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>#include</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;precedence.hpp&quot;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>#include</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;match_ipr.hpp&quot;</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><span style='font-size:9.5pt;font-family:Consolas;color:green;
background:white'>// Pattern-matching bindings for IPR hierarchy.</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:green;background:white'>/// Pattern-matching version of C++ printer</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>namespace</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> </span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>cxxm</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>{</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:green;background:white'>//------------------------------------------------------------------------------</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:navy;background:white'>std</span><span style='font-size:9.5pt;font-family:
Consolas;color:black;background:white'>::</span><span style='font-size:9.5pt;
font-family:Consolas;color:#2B91AF;background:white'>string</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> </span><span
style='font-size:9.5pt;font-family:Consolas;color:maroon;background:white'>eval_name</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>(</span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>const</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> </span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>Name</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>&amp;
</span><i><span style='font-size:9.5pt;font-family:Consolas;color:silver;
background:white'>name</span></i><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>)</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>{</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Match(</span><i><span
style='font-size:9.5pt;font-family:Consolas;color:silver;background:white'>name</span></i><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>)</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp; {</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Identifier,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
str) </span><span style='font-size:9.5pt;font-family:Consolas;color:blue;
background:white'>return</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'> to_str(str);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Id_expr,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
name) </span><span style='font-size:9.5pt;font-family:Consolas;color:blue;
background:white'>return</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'> eval_name(name);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Operator,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
opname) </span><span style='font-size:9.5pt;font-family:Consolas;color:blue;
background:white'>return</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'> </span><span style='font-size:9.5pt;font-family:
Consolas;color:#A31515;background:white'>&quot;operator&quot;</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> +
postfix(to_str(opname));</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Conversion,&nbsp;&nbsp;&nbsp;&nbsp;
target) </span><span style='font-size:9.5pt;font-family:Consolas;color:blue;
background:white'>return</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'> </span><span style='font-size:9.5pt;font-family:
Consolas;color:#A31515;background:white'>&quot;operator&quot;</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> +
postfix(eval_type(target));</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Scope_ref,
scope, member) </span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::string result = eval_expr(scope)
+ </span><span style='font-size:9.5pt;font-family:Consolas;color:#A31515;
background:white'>&quot;::&quot;</span><span style='font-size:9.5pt;font-family:
Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>if</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> (</span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>const</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
ipr::Template_id* p = ipr::util::view&lt;ipr::Template_id&gt;(member))</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:
9.5pt;font-family:Consolas;color:blue;background:white'>if</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
(ipr::is_template_dependent(scope))</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result += </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;template
&quot;</span><span style='font-size:9.5pt;font-family:Consolas;color:black;
background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>return</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
result + eval_expr(member);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Template_id,
name, arguments)</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::string args =
eval_sqnc(arguments.elements());</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>if</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
(args.length() &gt; </span><span style='font-size:9.5pt;font-family:Consolas;
color:teal;background:white'>0</span><span style='font-size:9.5pt;font-family:
Consolas;color:black;background:white'> &amp;&amp; args[args.length()-</span><span
style='font-size:9.5pt;font-family:Consolas;color:teal;background:white'>1</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>] == </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>'&gt;'</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>)</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; args += </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>' '</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>return</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
eval_name(name) + </span><span style='font-size:9.5pt;font-family:Consolas;
color:#A31515;background:white'>'&lt;'</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> + args + </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>'&gt;'</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Ctor_name,
object_type) </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>return</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> eval_type(object_type);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Dtor_name,
object_type) </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>return</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>'~'</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> +
eval_type(object_type);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Rname,
level, position)</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>if</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
(level&nbsp;&nbsp;&nbsp; &lt; template_parameters_stack.size() &amp;&amp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; position &lt;
template_parameters_stack[level]-&gt;size())</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:
9.5pt;font-family:Consolas;color:blue;background:white'>return</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
eval_name(template_parameters_stack[level]-&gt;</span><span style='font-size:
9.5pt;font-family:Consolas;color:blue;background:white'>operator</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>[](position).name());</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>else</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:
9.5pt;font-family:Consolas;color:blue;background:white'>return</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;BUGGY_IPR_RNAME_&quot;</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> +
to_str(level) + </span><span style='font-size:9.5pt;font-family:Consolas;
color:#A31515;background:white'>'_'</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> + to_str(position);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Type_id,&nbsp;&nbsp;&nbsp;&nbsp;
type_expr) </span><span style='font-size:9.5pt;font-family:Consolas;color:blue;
background:white'>return</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'> eval_type(type_expr);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp; }</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>EndMatch</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>}</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:green;background:white'>//------------------------------------------------------------------------------</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:navy;background:white'>std</span><span style='font-size:9.5pt;font-family:
Consolas;color:black;background:white'>::</span><span style='font-size:9.5pt;
font-family:Consolas;color:#2B91AF;background:white'>string</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> </span><span
style='font-size:9.5pt;font-family:Consolas;color:maroon;background:white'>eval_type</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>(</span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>const</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> </span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>Type</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>&amp;
</span><i><span style='font-size:9.5pt;font-family:Consolas;color:silver;
background:white'>n</span></i><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>, </span><span style='font-size:9.5pt;font-family:
Consolas;color:blue;background:white'>const</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> </span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>std</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>string</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>&amp;
</span><i><span style='font-size:9.5pt;font-family:Consolas;color:silver;
background:white'>declarator</span></i><span style='font-size:9.5pt;font-family:
Consolas;color:black;background:white'>, </span><span style='font-size:9.5pt;
font-family:Consolas;color:#2B91AF;background:white'>size_t</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> </span><i><span
style='font-size:9.5pt;font-family:Consolas;color:silver;background:white'>decl_precedence</span></i><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>) </span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>{</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>const</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> </span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>std</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>string</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>&amp;
</span><span style='font-size:9.5pt;font-family:Consolas;color:gray;background:
white'>t</span><span style='font-size:9.5pt;font-family:Consolas;color:black;
background:white'> = ::</span><span style='font-size:9.5pt;font-family:Consolas;
color:maroon;background:white'>precedence</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>(</span><i><span
style='font-size:9.5pt;font-family:Consolas;color:silver;background:white'>n</span></i><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>)
&lt; </span><i><span style='font-size:9.5pt;font-family:Consolas;color:silver;
background:white'>decl_precedence</span></i><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> ? </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>'('</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> + </span><i><span
style='font-size:9.5pt;font-family:Consolas;color:silver;background:white'>declarator</span></i><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> + </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>')'</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> : </span><i><span
style='font-size:9.5pt;font-family:Consolas;color:silver;background:white'>declarator</span></i><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:navy;background:white'>std</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>string</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> </span><span
style='font-size:9.5pt;font-family:Consolas;color:gray;background:white'>result</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Match(</span><i><span
style='font-size:9.5pt;font-family:Consolas;color:silver;background:white'>n</span></i><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>)</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp; {</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Array,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
element_type, bound) </span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result = eval_type(element_type, t + </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>'['</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> +
eval_expr(bound)+ </span><span style='font-size:9.5pt;font-family:Consolas;
color:#A31515;background:white'>']'</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>,
ipr::precedence&lt;ipr::Array&gt;::value); </span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Void&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
)&nbsp; result = </span><span style='font-size:9.5pt;font-family:Consolas;
color:#A31515;background:white'>&quot;void&quot;</span><span style='font-size:
9.5pt;font-family:Consolas;color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +
postfix(t); </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>break</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Bool&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
)&nbsp; result = </span><span style='font-size:9.5pt;font-family:Consolas;
color:#A31515;background:white'>&quot;bool&quot;</span><span style='font-size:
9.5pt;font-family:Consolas;color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +
postfix(t); </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>break</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
)&nbsp; result = </span><span style='font-size:9.5pt;font-family:Consolas;
color:#A31515;background:white'>&quot;char&quot;</span><span style='font-size:
9.5pt;font-family:Consolas;color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +
postfix(t); </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>break</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::sChar&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
)&nbsp; result = </span><span style='font-size:9.5pt;font-family:Consolas;
color:#A31515;background:white'>&quot;signed char&quot;</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ postfix(t); </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>break</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::uChar&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
)&nbsp; result = </span><span style='font-size:9.5pt;font-family:Consolas;
color:#A31515;background:white'>&quot;unsigned char&quot;</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ postfix(t); </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>break</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Wchar_t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
)&nbsp; result = </span><span style='font-size:9.5pt;font-family:Consolas;
color:#A31515;background:white'>&quot;wchar_t&quot;</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;+ postfix(t); </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>break</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Short&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
)&nbsp; result = </span><span style='font-size:9.5pt;font-family:Consolas;
color:#A31515;background:white'>&quot;short&quot;</span><span style='font-size:
9.5pt;font-family:Consolas;color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +
postfix(t); </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>break</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::uShort&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
)&nbsp; result = </span><span style='font-size:9.5pt;font-family:Consolas;
color:#A31515;background:white'>&quot;unsigned short&quot;</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;
+ postfix(t); </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>break</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
)&nbsp; result = </span><span style='font-size:9.5pt;font-family:Consolas;
color:#A31515;background:white'>&quot;int&quot;</span><span style='font-size:
9.5pt;font-family:Consolas;color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +
postfix(t); </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>break</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::uInt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
)&nbsp; result = </span><span style='font-size:9.5pt;font-family:Consolas;
color:#A31515;background:white'>&quot;unsigned int&quot;</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ postfix(t); </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>break</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
)&nbsp; result = </span><span style='font-size:9.5pt;font-family:Consolas;
color:#A31515;background:white'>&quot;long&quot;</span><span style='font-size:
9.5pt;font-family:Consolas;color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +
postfix(t); </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>break</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::uLong&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
)&nbsp; result = </span><span style='font-size:9.5pt;font-family:Consolas;
color:#A31515;background:white'>&quot;unsigned long&quot;</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ postfix(t); </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>break</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Long_long&nbsp;&nbsp;&nbsp;&nbsp;
)&nbsp; result = </span><span style='font-size:9.5pt;font-family:Consolas;
color:#A31515;background:white'>&quot;long long&quot;</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ postfix(t); </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>break</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::uLong_long&nbsp;&nbsp;&nbsp;
)&nbsp; result = </span><span style='font-size:9.5pt;font-family:Consolas;
color:#A31515;background:white'>&quot;unsigned long long&quot;</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> +
postfix(t); </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>break</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Float&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
)&nbsp; result = </span><span style='font-size:9.5pt;font-family:Consolas;
color:#A31515;background:white'>&quot;float&quot;</span><span style='font-size:
9.5pt;font-family:Consolas;color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +
postfix(t); </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>break</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
)&nbsp; result = </span><span style='font-size:9.5pt;font-family:Consolas;
color:#A31515;background:white'>&quot;double&quot;</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ postfix(t); </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>break</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Long_double&nbsp;&nbsp;
)&nbsp; result = </span><span style='font-size:9.5pt;font-family:Consolas;
color:#A31515;background:white'>&quot;long double&quot;</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ postfix(t); </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>break</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Ellipsis&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
)&nbsp; result = </span><span style='font-size:9.5pt;font-family:Consolas;
color:#A31515;background:white'>&quot;...&quot;</span><span style='font-size:
9.5pt;font-family:Consolas;color:black;background:white'>; </span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Decltype,&nbsp;&nbsp;&nbsp;&nbsp;
expr)&nbsp; result = </span><span style='font-size:9.5pt;font-family:Consolas;
color:#A31515;background:white'>&quot;decltype(&quot;</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> +
eval_expr(expr) + </span><span style='font-size:9.5pt;font-family:Consolas;
color:#A31515;background:white'>')'</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>; </span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Function,&nbsp;&nbsp;&nbsp;&nbsp;
source, target, throws) </span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { </span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result = eval_type(target, t + </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>'('</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> +
eval_expr(source) + </span><span style='font-size:9.5pt;font-family:Consolas;
color:#A31515;background:white'>')'</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>,
ipr::precedence&lt;ipr::Function&gt;::value);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>if</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
(!can_throw_everything(*matched)) </span><span style='font-size:9.5pt;
font-family:Consolas;color:green;background:white'>// we skip throw
specification when any exception can be thrown</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result += </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;
throw(&quot;</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'> + eval_expr(throws) + </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>')'</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Pointer,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
points_to)&nbsp; result = eval_type(points_to, </span><span style='font-size:9.5pt;
font-family:Consolas;color:#A31515;background:white'>'*'</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> +
postfix(t), ipr::precedence&lt;ipr::Pointer&gt;::value);&nbsp;&nbsp; </span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Reference,&nbsp;&nbsp;&nbsp;
refers_to)&nbsp; result = eval_type(refers_to, </span><span style='font-size:9.5pt;
font-family:Consolas;color:#A31515;background:white'>'&amp;'</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> +
postfix(t), ipr::precedence&lt;ipr::Reference&gt;::value); </span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Ptr_to_member,containing_type,
member_type) </span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result = eval_type(member_type,
eval_type(containing_type) + </span><span style='font-size:9.5pt;font-family:
Consolas;color:#A31515;background:white'>&quot;::*&quot;</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> +
postfix(t), ipr::precedence&lt;ipr::Ptr_to_member&gt;::value); </span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;</span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Qualified,&nbsp;&nbsp;&nbsp;
main_variant, quals)</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::string qualifiers;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>if</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
(quals &amp; ipr::Type::Const)</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; qualifiers += </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;const
&quot;</span><span style='font-size:9.5pt;font-family:Consolas;color:black;
background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>if</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
(quals &amp; ipr::Type::Volatile)</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; qualifiers += </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;volatile
&quot;</span><span style='font-size:9.5pt;font-family:Consolas;color:black;
background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>if</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
(quals &amp; ipr::Type::Restrict)</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>#ifdef</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> </span><span
style='font-size:9.5pt;font-family:Consolas;color:#6F008A;background:white'>_MSC_VER</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; qualifiers += </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;__restrict
&quot;</span><span style='font-size:9.5pt;font-family:Consolas;color:black;
background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>#else</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; qualifiers += </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;__restrict__
&quot;</span><span style='font-size:9.5pt;font-family:Consolas;color:black;
background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>#endif</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result = eval_type(main_variant,
qualifiers + postfix(t), ::precedence(main_variant)); </span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Product,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
elements)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result = eval_sqnc(elements); </span><span style='font-size:
9.5pt;font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Sum,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
elements)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result = eval_sqnc(elements); </span><span style='font-size:
9.5pt;font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Template,&nbsp;&nbsp;&nbsp;&nbsp;
source, target) result = </span><span style='font-size:9.5pt;font-family:Consolas;
color:#A31515;background:white'>&quot;template &lt;&quot;</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> +
eval_type(source) + </span><span style='font-size:9.5pt;font-family:Consolas;
color:#A31515;background:white'>&quot;&gt; &quot;</span><span style='font-size:
9.5pt;font-family:Consolas;color:black;background:white'> + eval_type(target,
postfix(t)); </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>break</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::As_type,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
expr)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result = eval_expr(expr) + postfix(t); </span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>; </span><span
style='font-size:9.5pt;font-family:Consolas;color:green;background:white'>//
This may represent user-defined class</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Udt,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
name)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result = eval_name(name) + postfix(t); </span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>; </span><span
style='font-size:9.5pt;font-family:Consolas;color:green;background:white'>//
This is analog of Decl handling in expression context - we only refer the name</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp; }</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>EndMatch</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>if</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> (</span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:maroon;background:white'>is_template_dependent_type</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>(</span><i><span
style='font-size:9.5pt;font-family:Consolas;color:silver;background:white'>n</span></i><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>))</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:gray;background:white'>result</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> = </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;typename
&quot;</span><span style='font-size:9.5pt;font-family:Consolas;color:black;
background:white'> + </span><span style='font-size:9.5pt;font-family:Consolas;
color:gray;background:white'>result</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>return</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> </span><span
style='font-size:9.5pt;font-family:Consolas;color:gray;background:white'>result</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>}</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:green;background:white'>//------------------------------------------------------------------------------</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:navy;background:white'>std</span><span style='font-size:9.5pt;font-family:
Consolas;color:black;background:white'>::</span><span style='font-size:9.5pt;
font-family:Consolas;color:#2B91AF;background:white'>string</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> </span><span
style='font-size:9.5pt;font-family:Consolas;color:maroon;background:white'>eval_classic</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>(</span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>const</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> </span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>Classic</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>&amp;
</span><i><span style='font-size:9.5pt;font-family:Consolas;color:silver;
background:white'>n</span></i><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>)</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>{</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Match(</span><i><span
style='font-size:9.5pt;font-family:Consolas;color:silver;background:white'>n</span></i><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>)</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp; {</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Literal,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
_, str) </span><span style='font-size:9.5pt;font-family:Consolas;color:blue;
background:white'>return</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'> to_str(str);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:green;background:white'>// Unary Operations</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Address,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
operand) </span><span style='font-size:9.5pt;font-family:Consolas;color:blue;
background:white'>return</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'> </span><span style='font-size:9.5pt;font-family:
Consolas;color:#A31515;background:white'>'&amp;'</span><span style='font-size:
9.5pt;font-family:Consolas;color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +
eval_expr(operand);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Array_delete,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
operand) </span><span style='font-size:9.5pt;font-family:Consolas;color:blue;
background:white'>return</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'> </span><span style='font-size:9.5pt;font-family:
Consolas;color:#A31515;background:white'>&quot;delete[] &quot;</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> +
eval_expr(operand);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Complement,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
operand) </span><span style='font-size:9.5pt;font-family:Consolas;color:blue;
background:white'>return</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'> </span><span style='font-size:9.5pt;font-family:
Consolas;color:#A31515;background:white'>'~'</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +
eval_expr(operand);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Delete,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
operand) </span><span style='font-size:9.5pt;font-family:Consolas;color:blue;
background:white'>return</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'> </span><span style='font-size:9.5pt;font-family:
Consolas;color:#A31515;background:white'>&quot;delete &quot;</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>&nbsp;&nbsp; +
eval_expr(operand);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Deref,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
operand) </span><span style='font-size:9.5pt;font-family:Consolas;color:blue;
background:white'>return</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'> </span><span style='font-size:9.5pt;font-family:
Consolas;color:#A31515;background:white'>'*'</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +
eval_expr(operand);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Expr_sizeof,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
operand) </span><span style='font-size:9.5pt;font-family:Consolas;color:blue;
background:white'>return</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'> </span><span style='font-size:9.5pt;font-family:
Consolas;color:#A31515;background:white'>&quot;sizeof(&quot;</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>&nbsp;&nbsp; +
eval_expr(operand) + </span><span style='font-size:9.5pt;font-family:Consolas;
color:#A31515;background:white'>')'</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Expr_typeid,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
operand) </span><span style='font-size:9.5pt;font-family:Consolas;color:blue;
background:white'>return</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'> </span><span style='font-size:9.5pt;font-family:
Consolas;color:#A31515;background:white'>&quot;typeid(&quot;</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>&nbsp;&nbsp; +
eval_expr(operand) + </span><span style='font-size:9.5pt;font-family:Consolas;
color:#A31515;background:white'>')'</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Not,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
operand) </span><span style='font-size:9.5pt;font-family:Consolas;color:blue;
background:white'>return</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'> </span><span style='font-size:9.5pt;font-family:
Consolas;color:#A31515;background:white'>'!'</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +
eval_expr(operand);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Paren_expr,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
operand) </span><span style='font-size:9.5pt;font-family:Consolas;color:blue;
background:white'>return</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'> </span><span style='font-size:9.5pt;font-family:
Consolas;color:#A31515;background:white'>'('</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +
eval_expr(operand) + </span><span style='font-size:9.5pt;font-family:Consolas;
color:#A31515;background:white'>')'</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Post_decrement,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
operand) </span><span style='font-size:9.5pt;font-family:Consolas;color:blue;
background:white'>return</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; eval_expr(operand) + </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;--&quot;</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Post_increment,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
operand) </span><span style='font-size:9.5pt;font-family:Consolas;color:blue;
background:white'>return</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; eval_expr(operand) + </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;++&quot;</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Pre_decrement,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
operand) </span><span style='font-size:9.5pt;font-family:Consolas;color:blue;
background:white'>return</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'> </span><span style='font-size:9.5pt;font-family:
Consolas;color:#A31515;background:white'>&quot;--&quot;</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ eval_expr(operand);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Pre_increment,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
operand) </span><span style='font-size:9.5pt;font-family:Consolas;color:blue;
background:white'>return</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'> </span><span style='font-size:9.5pt;font-family:
Consolas;color:#A31515;background:white'>&quot;++&quot;</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ eval_expr(operand);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Throw,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
operand) </span><span style='font-size:9.5pt;font-family:Consolas;color:blue;
background:white'>return</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'> </span><span style='font-size:9.5pt;font-family:
Consolas;color:#A31515;background:white'>&quot;throw &quot;</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>&nbsp;&nbsp;&nbsp; +
eval_expr(operand);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Type_sizeof,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
operand) </span><span style='font-size:9.5pt;font-family:Consolas;color:blue;
background:white'>return</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'> </span><span style='font-size:9.5pt;font-family:
Consolas;color:#A31515;background:white'>&quot;sizeof(&quot;</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>&nbsp;&nbsp; +
eval_expr(operand) + </span><span style='font-size:9.5pt;font-family:Consolas;
color:#A31515;background:white'>')'</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Type_typeid,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
operand) </span><span style='font-size:9.5pt;font-family:Consolas;color:blue;
background:white'>return</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'> </span><span style='font-size:9.5pt;font-family:
Consolas;color:#A31515;background:white'>&quot;typeid(&quot;</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>&nbsp;&nbsp; +
eval_expr(operand) + </span><span style='font-size:9.5pt;font-family:Consolas;
color:#A31515;background:white'>')'</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Unary_minus,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
operand) </span><span style='font-size:9.5pt;font-family:Consolas;color:blue;
background:white'>return</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'> </span><span style='font-size:9.5pt;font-family:
Consolas;color:#A31515;background:white'>'-'</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +
eval_expr(operand);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Unary_plus,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
operand) </span><span style='font-size:9.5pt;font-family:Consolas;color:blue;
background:white'>return</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'> </span><span style='font-size:9.5pt;font-family:
Consolas;color:#A31515;background:white'>'+'</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +
eval_expr(operand);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:green;background:white'>// Binary Operations</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Plus,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
first, second) </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>return</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> eval_expr(first) + </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;
+ &quot;</span><span style='font-size:9.5pt;font-family:Consolas;color:black;
background:white'>&nbsp;&nbsp; + eval_expr(second);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Minus,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
first, second) </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>return</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> eval_expr(first) + </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;
- &quot;</span><span style='font-size:9.5pt;font-family:Consolas;color:black;
background:white'>&nbsp;&nbsp; + eval_expr(second);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Mul,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
first, second) </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>return</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> eval_expr(first) + </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;
* &quot;</span><span style='font-size:9.5pt;font-family:Consolas;color:black;
background:white'>&nbsp;&nbsp; + eval_expr(second);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Div,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
first, second) </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>return</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> eval_expr(first) + </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;
/ &quot;</span><span style='font-size:9.5pt;font-family:Consolas;color:black;
background:white'>&nbsp;&nbsp; + eval_expr(second);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Modulo,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
first, second) </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>return</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> eval_expr(first) + </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;
% &quot;</span><span style='font-size:9.5pt;font-family:Consolas;color:black;
background:white'>&nbsp;&nbsp; + eval_expr(second);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Bitand,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
first, second) </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>return</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> eval_expr(first) + </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;
&amp; &quot;</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp; + eval_expr(second);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Bitor,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
first, second) </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>return</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> eval_expr(first) + </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;
| &quot;</span><span style='font-size:9.5pt;font-family:Consolas;color:black;
background:white'>&nbsp;&nbsp; + eval_expr(second);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Bitxor,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
first, second) </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>return</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> eval_expr(first) + </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;
^ &quot;</span><span style='font-size:9.5pt;font-family:Consolas;color:black;
background:white'>&nbsp;&nbsp; + eval_expr(second);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Lshift,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
first, second) </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>return</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> eval_expr(first) + </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;
&lt;&lt; &quot;</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp; + eval_expr(second);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Rshift,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
first, second) </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>return</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> eval_expr(first) + </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;
&gt;&gt; &quot;</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp; + eval_expr(second);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Assign,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
first, second) </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>return</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> eval_expr(first) + </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;
= &quot;</span><span style='font-size:9.5pt;font-family:Consolas;color:black;
background:white'>&nbsp;&nbsp; + eval_expr(second);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Plus_assign,&nbsp;&nbsp;&nbsp;&nbsp;
first, second) </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>return</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> eval_expr(first) + </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;
+= &quot;</span><span style='font-size:9.5pt;font-family:Consolas;color:black;
background:white'>&nbsp; + eval_expr(second);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Minus_assign,&nbsp;&nbsp;&nbsp;
first, second) </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>return</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> eval_expr(first) + </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;
-= &quot;</span><span style='font-size:9.5pt;font-family:Consolas;color:black;
background:white'>&nbsp; + eval_expr(second);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Mul_assign,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
first, second) </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>return</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> eval_expr(first) + </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;
*= &quot;</span><span style='font-size:9.5pt;font-family:Consolas;color:black;
background:white'>&nbsp; + eval_expr(second);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Div_assign,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
first, second) </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>return</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> eval_expr(first) + </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;
/= &quot;</span><span style='font-size:9.5pt;font-family:Consolas;color:black;
background:white'>&nbsp; + eval_expr(second);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Modulo_assign,&nbsp;&nbsp;
first, second) </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>return</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> eval_expr(first) + </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;
%= &quot;</span><span style='font-size:9.5pt;font-family:Consolas;color:black;
background:white'>&nbsp; + eval_expr(second);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Bitand_assign,&nbsp;&nbsp;
first, second) </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>return</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> eval_expr(first) + </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;
&amp;= &quot;</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp; + eval_expr(second);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Bitor_assign,&nbsp;&nbsp;&nbsp;
first, second) </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>return</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> eval_expr(first) + </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;
|= &quot;</span><span style='font-size:9.5pt;font-family:Consolas;color:black;
background:white'>&nbsp; + eval_expr(second);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Bitxor_assign,&nbsp;&nbsp;
first, second) </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>return</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> eval_expr(first) + </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;
^= &quot;</span><span style='font-size:9.5pt;font-family:Consolas;color:black;
background:white'>&nbsp; + eval_expr(second);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Lshift_assign,&nbsp;&nbsp;
first, second) </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>return</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> eval_expr(first) + </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;
&lt;&lt;= &quot;</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'> + eval_expr(second);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Rshift_assign,&nbsp;&nbsp;
first, second) </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>return</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> eval_expr(first) + </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;
&gt;&gt;= &quot;</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'> + eval_expr(second);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::And,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
first, second) </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>return</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> eval_expr(first) + </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;
&amp;&amp; &quot;</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp; + eval_expr(second);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Or,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
first, second) </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>return</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> eval_expr(first) + </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;
|| &quot;</span><span style='font-size:9.5pt;font-family:Consolas;color:black;
background:white'>&nbsp; + eval_expr(second);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Equal,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
first, second) </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>return</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> eval_expr(first) + </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;
== &quot;</span><span style='font-size:9.5pt;font-family:Consolas;color:black;
background:white'>&nbsp; + eval_expr(second);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Not_equal,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
first, second) </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>return</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> eval_expr(first) + </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;
!= &quot;</span><span style='font-size:9.5pt;font-family:Consolas;color:black;
background:white'>&nbsp; + eval_expr(second);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Greater,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
first, second) </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>return</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> eval_expr(first) + </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;
&gt; &quot;</span><span style='font-size:9.5pt;font-family:Consolas;color:black;
background:white'>&nbsp;&nbsp; + eval_expr(second);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Greater_equal,&nbsp;&nbsp;
first, second) </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>return</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> eval_expr(first) + </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;
&gt;= &quot;</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp; + eval_expr(second);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Less,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
first, second) </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>return</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> eval_expr(first) + </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;
&lt; &quot;</span><span style='font-size:9.5pt;font-family:Consolas;color:black;
background:white'>&nbsp;&nbsp; + eval_expr(second);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Less_equal,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
first, second) </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>return</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> eval_expr(first) + </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;
&lt;= &quot;</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp; + eval_expr(second);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Comma,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
first, second) </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>return</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> eval_expr(first) + </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;
, &quot;</span><span style='font-size:9.5pt;font-family:Consolas;color:black;
background:white'>&nbsp;&nbsp; + eval_expr(second);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Datum,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
c, s) </span><span style='font-size:9.5pt;font-family:Consolas;color:blue;
background:white'>return</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'> eval_expr(c) + </span><span style='font-size:
9.5pt;font-family:Consolas;color:#A31515;background:white'>'('</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>&nbsp;&nbsp; +
eval_sqnc(s.elements()) + </span><span style='font-size:9.5pt;font-family:Consolas;
color:#A31515;background:white'>')'</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:green;background:white'>// Binary Operations: Casts</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Cast,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
type, expr) </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>return</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>'('</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> +
eval_type(type) + </span><span style='font-size:9.5pt;font-family:Consolas;
color:#A31515;background:white'>')'</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>&nbsp; + eval_expr(expr);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Const_cast,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
type, expr) </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>return</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;const_cast&lt;&quot;</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> +
eval_type(type) + </span><span style='font-size:9.5pt;font-family:Consolas;
color:#A31515;background:white'>&quot;&gt;(&quot;</span><span style='font-size:
9.5pt;font-family:Consolas;color:black;background:white'> + eval_expr(expr) + </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>')'</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Dynamic_cast,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
type, expr) </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>return</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp; </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;dynamic_cast&lt;&quot;</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> +
eval_type(type) + </span><span style='font-size:9.5pt;font-family:Consolas;
color:#A31515;background:white'>&quot;&gt;(&quot;</span><span style='font-size:
9.5pt;font-family:Consolas;color:black;background:white'> + eval_expr(expr) + </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>')'</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Reinterpret_cast,&nbsp;&nbsp;
type, expr) </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>return</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;reinterpret_cast&lt;&quot;</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> +
eval_type(type) + </span><span style='font-size:9.5pt;font-family:Consolas;
color:#A31515;background:white'>&quot;&gt;(&quot;</span><span style='font-size:
9.5pt;font-family:Consolas;color:black;background:white'> + eval_expr(expr) + </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>')'</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Static_cast,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
type, expr) </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>return</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;static_cast&lt;&quot;</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> +
eval_type(type) + </span><span style='font-size:9.5pt;font-family:Consolas;
color:#A31515;background:white'>&quot;&gt;(&quot;</span><span style='font-size:
9.5pt;font-family:Consolas;color:black;background:white'> + eval_expr(expr) + </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>')'</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:green;background:white'>// Binary Operations: Member
selection</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Array_ref,&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;base, member) </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>return</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> eval_expr(base) + </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>'['</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>&nbsp; +
eval_expr(member) + </span><span style='font-size:9.5pt;font-family:Consolas;
color:#A31515;background:white'>']'</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>; </span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Arrow,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
base, member) </span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>if</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
(matched-&gt;has_impl_decl())</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::string result =
eval_expr(base) + </span><span style='font-size:9.5pt;font-family:Consolas;
color:#A31515;background:white'>'.'</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> +
eval_name(matched-&gt;impl_decl().name()) + </span><span style='font-size:9.5pt;
font-family:Consolas;color:#A31515;background:white'>&quot;()&quot;</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:
9.5pt;font-family:Consolas;color:blue;background:white'>if</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
(!is_phantom(member))</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result += </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;-&gt;&quot;</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> +
eval_expr(member);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:
9.5pt;font-family:Consolas;color:blue;background:white'>return</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
result;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>else</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:
9.5pt;font-family:Consolas;color:blue;background:white'>return</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
eval_expr(base) + </span><span style='font-size:9.5pt;font-family:Consolas;
color:#A31515;background:white'>&quot;-&gt;&quot;</span><span style='font-size:
9.5pt;font-family:Consolas;color:black;background:white'> + eval_expr(member); </span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Dot,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
base, member) </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>return</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> eval_expr(base) + </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>'.'</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>&nbsp;&nbsp; +
eval_expr(member);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Arrow_star,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
base, member) </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>return</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> eval_expr(base) + </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;-&gt;*&quot;</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> +
eval_expr(member);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Dot_star,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
base, member) </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>return</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> eval_expr(base) + </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;.*&quot;</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>&nbsp; +
eval_expr(member);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:green;background:white'>// Ternary operations</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::New,&nbsp;&nbsp;
placement, allocated_type, initializer) </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>return</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;new
&quot;</span><span style='font-size:9.5pt;font-family:Consolas;color:black;
background:white'> + eval_type(allocated_type); </span><span style='font-size:
9.5pt;font-family:Consolas;color:green;background:white'>// FIX: Take placement
into account</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Conditional,&nbsp;
condition, then_expr, else_expr) </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>return</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
eval_expr(condition) + </span><span style='font-size:9.5pt;font-family:Consolas;
color:#A31515;background:white'>&quot; ? &quot;</span><span style='font-size:
9.5pt;font-family:Consolas;color:black;background:white'>&nbsp; +
eval_expr(then_expr) + </span><span style='font-size:9.5pt;font-family:Consolas;
color:#A31515;background:white'>&quot; : &quot;</span><span style='font-size:
9.5pt;font-family:Consolas;color:black;background:white'> +
eval_expr(else_expr);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:green;background:white'>// Other operations</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>ipr::Call,
function, args)</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::string func_name =
eval_expr(function);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>if</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> (</span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>const</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
ipr::Fundecl* target = call_target(*matched)) </span><span style='font-size:
9.5pt;font-family:Consolas;color:green;background:white'>// Call target is
known</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:
9.5pt;font-family:Consolas;color:blue;background:white'>const</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
ipr::Parameter_list&amp; parameters = target-&gt;parameters();</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:
9.5pt;font-family:Consolas;color:blue;background:white'>if</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
(is_member_function(*target))</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
style='font-size:9.5pt;font-family:Consolas;color:green;background:white'>//
Call to a member function</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
style='font-size:9.5pt;font-family:Consolas;color:#6F008A;background:white'>assert</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>(args.size()
&gt; </span><span style='font-size:9.5pt;font-family:Consolas;color:teal;
background:white'>0</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>); </span><span style='font-size:9.5pt;
font-family:Consolas;color:green;background:white'>// There must be argument
that represents this pointer</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::string result;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
style='font-size:9.5pt;font-family:Consolas;color:green;background:white'>//
Because of function call unification, calls to member functions</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
style='font-size:9.5pt;font-family:Consolas;color:green;background:white'>//
are still represented as regular calls with this pointer passed</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
style='font-size:9.5pt;font-family:Consolas;color:green;background:white'>//
explicitly as the first argument. The original call might have</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
style='font-size:9.5pt;font-family:Consolas;color:green;background:white'>//
been on reference to object, in which case an ipr::Address node</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
style='font-size:9.5pt;font-family:Consolas;color:green;background:white'>// is
artificially inserted. Here we are trying to undo that </span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
style='font-size:9.5pt;font-family:Consolas;color:green;background:white'>//
unnecessary address to print the dot when possible.</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>if</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> (</span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>const</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
ipr::Address* addr = ipr::util::view&lt;ipr::Address&gt;(args[</span><span
style='font-size:9.5pt;font-family:Consolas;color:teal;background:white'>0</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>]))</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
style='font-size:9.5pt;font-family:Consolas;color:green;background:white'>//
The address is artifical and the actual call is through dot</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result =
eval_expr(addr-&gt;operand()) + </span><span style='font-size:9.5pt;font-family:
Consolas;color:#A31515;background:white'>'.'</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>else</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
style='font-size:9.5pt;font-family:Consolas;color:green;background:white'>//
The actual call is through this pointer</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result = </span><span
style='font-size:9.5pt;font-family:Consolas;color:maroon;background:white'>eval_expr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>(args[</span><span
style='font-size:9.5pt;font-family:Consolas;color:teal;background:white'>0</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>]) + </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;-&gt;&quot;</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
style='font-size:9.5pt;font-family:Consolas;color:green;background:white'>//
Note that using target-&gt;name() instead of func_name might omit scope etc.</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>return</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
result + func_name + </span><span style='font-size:9.5pt;font-family:Consolas;
color:#A31515;background:white'>'('</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> + </span><span
style='font-size:9.5pt;font-family:Consolas;color:#FF6464;background:white'>eval_sqnc</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>(args.elements(),
</span><span style='font-size:9.5pt;font-family:Consolas;color:teal;background:
white'>1</span><span style='font-size:9.5pt;font-family:Consolas;color:black;
background:white'>) + </span><span style='font-size:9.5pt;font-family:Consolas;
color:#A31515;background:white'>')'</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:
9.5pt;font-family:Consolas;color:blue;background:white'>else</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> </span><span
style='font-size:9.5pt;font-family:Consolas;color:green;background:white'>//
not a member function</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
style='font-size:9.5pt;font-family:Consolas;color:green;background:white'>//
Call to a regular function</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>return</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
func_name + </span><span style='font-size:9.5pt;font-family:Consolas;
color:#A31515;background:white'>'('</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> + </span><span
style='font-size:9.5pt;font-family:Consolas;color:#FF6464;background:white'>eval_sqnc</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>(args.elements())
+ </span><span style='font-size:9.5pt;font-family:Consolas;color:#A31515;
background:white'>')'</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>else</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> </span><span
style='font-size:9.5pt;font-family:Consolas;color:green;background:white'>//
Call target is not known</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:
9.5pt;font-family:Consolas;color:blue;background:white'>if</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> (</span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>const</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
ipr::Function* ft = ipr::util::view&lt;ipr::Function&gt;(function.type()))</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>if</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
(is_member_function_type(*ft))</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
style='font-size:9.5pt;font-family:Consolas;color:green;background:white'>//
Call to a member function</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
style='font-size:9.5pt;font-family:Consolas;color:#6F008A;background:white'>assert</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>(args.size()
&gt; </span><span style='font-size:9.5pt;font-family:Consolas;color:teal;
background:white'>0</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>); </span><span style='font-size:9.5pt;
font-family:Consolas;color:green;background:white'>// There must be argument
that represents this pointer</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::string result;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
style='font-size:9.5pt;font-family:Consolas;color:green;background:white'>//
Because of function call unification, calls to member functions</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
style='font-size:9.5pt;font-family:Consolas;color:green;background:white'>//
are still represented as regular calls with this pointer passed</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
style='font-size:9.5pt;font-family:Consolas;color:green;background:white'>//
explicitly as the first argument. The original call might have</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
style='font-size:9.5pt;font-family:Consolas;color:green;background:white'>//
been on reference to object, in which case an ipr::Address node</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
style='font-size:9.5pt;font-family:Consolas;color:green;background:white'>// is
artificially inserted. Here we are trying to undo that </span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
style='font-size:9.5pt;font-family:Consolas;color:green;background:white'>//
unnecessary address to print the dot when possible.</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>if</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> (</span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>const</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
ipr::Address* addr = ipr::util::view&lt;ipr::Address&gt;(args[</span><span
style='font-size:9.5pt;font-family:Consolas;color:teal;background:white'>0</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>]))</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
style='font-size:9.5pt;font-family:Consolas;color:green;background:white'>//
The address is artifical and the actual call is through dot</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result =
eval_expr(addr-&gt;operand()) + </span><span style='font-size:9.5pt;font-family:
Consolas;color:#A31515;background:white'>'.'</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>else</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
style='font-size:9.5pt;font-family:Consolas;color:green;background:white'>//
The actual call is through this pointer</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result =
eval_expr(args[</span><span style='font-size:9.5pt;font-family:Consolas;
color:teal;background:white'>0</span><span style='font-size:9.5pt;font-family:
Consolas;color:black;background:white'>]) + </span><span style='font-size:9.5pt;
font-family:Consolas;color:#A31515;background:white'>&quot;-&gt;&quot;</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
style='font-size:9.5pt;font-family:Consolas;color:green;background:white'>//
Note that using target-&gt;name() instead of func_name might omit scope etc.</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>return</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
result + func_name + </span><span style='font-size:9.5pt;font-family:Consolas;
color:#A31515;background:white'>'('</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> + </span><span
style='font-size:9.5pt;font-family:Consolas;color:#FF6464;background:white'>eval_sqnc</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>(args.elements(),
</span><span style='font-size:9.5pt;font-family:Consolas;color:teal;background:
white'>1</span><span style='font-size:9.5pt;font-family:Consolas;color:black;
background:white'>) + </span><span style='font-size:9.5pt;font-family:Consolas;
color:#A31515;background:white'>')'</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:
9.5pt;font-family:Consolas;color:blue;background:white'>return</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
func_name + </span><span style='font-size:9.5pt;font-family:Consolas;
color:#A31515;background:white'>'('</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> + </span><span
style='font-size:9.5pt;font-family:Consolas;color:#FF6464;background:white'>eval_sqnc</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>(args.elements())
+ </span><span style='font-size:9.5pt;font-family:Consolas;color:#A31515;
background:white'>')'</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp; }</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>EndMatch</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>}</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:green;background:white'>//------------------------------------------------------------------------------</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>cxx_printer&amp; cxx_printer::</span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>operator</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>&lt;&lt;(</span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>const</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
ipr::Stmt&amp; stmt)</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>{</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Match(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>stmt)</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp; {</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>Labeled_stmt</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>,
lbl, stm)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; beforeF(*matched) &lt;&lt; (is_case_label(lbl) ? </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;case
&quot;</span><span style='font-size:9.5pt;font-family:Consolas;color:black;
background:white'> : </span><span style='font-size:9.5pt;font-family:Consolas;
color:#A31515;background:white'>&quot;&quot;</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>) &lt;&lt; lbl &lt;&lt; </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;:
&quot;</span><span style='font-size:9.5pt;font-family:Consolas;color:black;
background:white'> &lt;&lt; stm; after(*matched); </span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>Block</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>,
body, handlers)</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>if</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
(handlers.size())</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; beforeF(*matched) &lt;&lt; </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;try&quot;</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
&lt;&lt;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; indentation&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;&lt; </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>'{'</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>else</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; beforeF(*matched) &lt;&lt; </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>'{'</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *</span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>this</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
&lt;&lt; increase &lt;&lt; body &lt;&lt; decrease </span><span
style='font-size:9.5pt;font-family:Consolas;color:green;background:white'>//
Print statements in the body</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;&lt; indentation &lt;&lt; </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>'}'</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> </span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;&lt;
handlers;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;font-family:
Consolas;color:green;background:white'>// Print catch handlers</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; after(*matched,</span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>true</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>Ctor_body</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>,&nbsp;&nbsp;&nbsp;
inits, block)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;font-family:
Consolas;color:blue;background:white'>if</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> (inits.size()) *</span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>this</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
&lt;&lt; </span><span style='font-size:9.5pt;font-family:Consolas;color:#A31515;
background:white'>&quot; : &quot;</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> &lt;&lt;
eval_sqnc(inits.elements()); *</span><span style='font-size:9.5pt;font-family:
Consolas;color:blue;background:white'>this</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> &lt;&lt; block; </span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>If_then</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cond, then_stmt)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; beforeT(*matched) &lt;&lt; </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;if
(&quot;</span><span style='font-size:9.5pt;font-family:Consolas;color:black;
background:white'>&nbsp;&nbsp;&nbsp;&nbsp; &lt;&lt; cond &lt;&lt; </span><span style='font-size:
9.5pt;font-family:Consolas;color:#A31515;background:white'>')'</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
&lt;&lt; increase &lt;&lt; then_stmt &lt;&lt; decrease; after(*matched,</span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>true</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>); </span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>If_then_else</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>,
cond, then_stmt, else_stmt) beforeT(*matched) &lt;&lt; </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;if
(&quot;</span><span style='font-size:9.5pt;font-family:Consolas;color:black;
background:white'>&nbsp;&nbsp;&nbsp;&nbsp; &lt;&lt; cond &lt;&lt; </span><span style='font-size:
9.5pt;font-family:Consolas;color:#A31515;background:white'>')'</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
&lt;&lt; increase &lt;&lt; then_stmt &lt;&lt; decrease &lt;&lt; indentation
&lt;&lt; </span><span style='font-size:9.5pt;font-family:Consolas;color:#A31515;
background:white'>&quot;else&quot;</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> &lt;&lt; increase &lt;&lt;
else_stmt &lt;&lt; decrease; after(*matched,</span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>true</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>); </span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>Switch</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cond, body)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; beforeT(*matched) &lt;&lt; </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;switch
(&quot;</span><span style='font-size:9.5pt;font-family:Consolas;color:black;
background:white'> &lt;&lt; cond &lt;&lt; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#A31515;background:white'>')'</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
&lt;&lt; body; after(*matched,</span><span style='font-size:9.5pt;font-family:
Consolas;color:blue;background:white'>true</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>); </span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>While</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cond, body)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; beforeT(*matched) &lt;&lt; </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;while
(&quot;</span><span style='font-size:9.5pt;font-family:Consolas;color:black;
background:white'>&nbsp; &lt;&lt; cond &lt;&lt; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#A31515;background:white'>')'</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
&lt;&lt; increase &lt;&lt; body &lt;&lt; decrease; after(*matched,</span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>true</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>); </span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>Do</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
cond, body)&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;beforeT(*matched) &lt;&lt; </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;do
&quot;</span><span style='font-size:9.5pt;font-family:Consolas;color:black;
background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;&lt; increase &lt;&lt; body &lt;&lt; decrease
&lt;&lt; indentation &lt;&lt; </span><span style='font-size:9.5pt;font-family:
Consolas;color:#A31515;background:white'>&quot;while (&quot;</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
&lt;&lt; cond &lt;&lt; </span><span style='font-size:9.5pt;font-family:Consolas;
color:#A31515;background:white'>&quot;);&quot;</span><span style='font-size:
9.5pt;font-family:Consolas;color:black;background:white'>; after(*matched,</span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>true</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>); </span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>For</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
init, cond, incr, body)&nbsp;&nbsp;&nbsp;&nbsp; beforeT(*matched) &lt;&lt; </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;for
(&quot;</span><span style='font-size:9.5pt;font-family:Consolas;color:black;
background:white'>&nbsp;&nbsp;&nbsp; &lt;&lt; init &lt;&lt; </span><span style='font-size:
9.5pt;font-family:Consolas;color:#A31515;background:white'>';'</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
&lt;&lt; cond &lt;&lt; </span><span style='font-size:9.5pt;font-family:Consolas;
color:#A31515;background:white'>';'</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> &lt;&lt; incr &lt;&lt; </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>')'</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
&lt;&lt; increase &lt;&lt; body &lt;&lt; decrease; after(*matched,</span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>true</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>); </span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>Break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
beforeF(*matched) &lt;&lt; </span><span style='font-size:9.5pt;font-family:
Consolas;color:#A31515;background:white'>&quot;break;&quot;</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;&nbsp;&nbsp;&nbsp;
after(*matched); </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>break</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>Continue</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
beforeF(*matched) &lt;&lt; </span><span style='font-size:9.5pt;font-family:
Consolas;color:#A31515;background:white'>&quot;continue;&quot;</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;
after(*matched); </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>break</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>Goto</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
target)</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>const</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
ipr::Identifier* p = ipr::util::view&lt;ipr::Identifier&gt;(target);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>assert</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>(p); </span><span
style='font-size:9.5pt;font-family:Consolas;color:green;background:white'>//
When this asserts, ipr::Goto stopped pointing to just Identifier</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; beforeF(*matched) &lt;&lt; </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;goto
&quot;</span><span style='font-size:9.5pt;font-family:Consolas;color:black;
background:white'> &lt;&lt; (p ? eval_name(*p) : </span><span style='font-size:
9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;???&quot;</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>)
&lt;&lt; </span><span style='font-size:9.5pt;font-family:Consolas;color:#A31515;
background:white'>';'</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; after(*matched);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>Return</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
value)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; beforeF(*matched) &lt;&lt; </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;return
&quot;</span><span style='font-size:9.5pt;font-family:Consolas;color:black;
background:white'> &lt;&lt; value &lt;&lt; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#A31515;background:white'>';'</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;
after(*matched); </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>break</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>Handler</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
expt, body)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; beforeF(*matched) &lt;&lt; </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>&quot;catch(&quot;</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
&lt;&lt; eval_decl(expt) &lt;&lt; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#A31515;background:white'>')'</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
&lt;&lt; body; after(*matched); </span><span style='font-size:9.5pt;font-family:
Consolas;color:blue;background:white'>break</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>Empty_stmt</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
beforeF(*matched) &lt;&lt; </span><span style='font-size:9.5pt;font-family:
Consolas;color:#A31515;background:white'>';'</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>; after(*matched); </span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>Expr_stmt</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>,&nbsp;&nbsp;&nbsp;
expr)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; beforeF(*matched) &lt;&lt; expr &lt;&lt; </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>';'</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;
after(*matched); </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>break</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:green;background:white'>// Declarations</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>Decl</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
*</span><span style='font-size:9.5pt;font-family:Consolas;color:blue;
background:white'>this</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'> &lt;&lt; *matched; </span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp; }</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>EndMatch</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>return</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> *</span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>this</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>}</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:green;background:white'>//------------------------------------------------------------------------------</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>cxx_printer&amp; cxx_printer::</span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>operator</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>&lt;&lt;(</span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>const</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
ipr::Decl&amp; decl)</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>{</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Match(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>decl)</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp; {</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>Typedecl</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>,
name, type)</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; beforeT(*matched) &lt;&lt;
prefix_specifiers(*matched) &lt;&lt; eval_type(type, eval_name(name));</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>if</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
(is_namespace(*matched))</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:
9.5pt;font-family:Consolas;color:#6F008A;background:white'>assert</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>(matched-&gt;has_initializer());
</span><span style='font-size:9.5pt;font-family:Consolas;color:green;
background:white'>// Namespaces cannot be forward declared</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:
9.5pt;font-family:Consolas;color:green;background:white'>// initializer() would
be a Namespace node, to which we forward traversal</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:
9.5pt;font-family:Consolas;color:blue;background:white'>const</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
ipr::Namespace* ns =
ipr::util::view&lt;ipr::Namespace&gt;(matched-&gt;initializer());&nbsp; </span><span
style='font-size:9.5pt;font-family:Consolas;color:green;background:white'>//
dynamic_cast alternative</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:
9.5pt;font-family:Consolas;color:#6F008A;background:white'>assert</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>(ns);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *</span><span style='font-size:
9.5pt;font-family:Consolas;color:blue;background:white'>this</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
&lt;&lt; *ns;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>else</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:
9.5pt;font-family:Consolas;color:blue;background:white'>if</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
(matched-&gt;has_initializer())</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *</span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>this</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
&lt;&lt; matched-&gt;initializer();</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:
9.5pt;font-family:Consolas;color:blue;background:white'>else</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *</span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>this</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
&lt;&lt; semicolon;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; after(*matched,</span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>true</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>); </span><span
style='font-size:9.5pt;font-family:Consolas;color:green;background:white'>//
Print comment after the type declaration/namespace</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>Fundecl</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>,
name, type, membership, parameters) </span><span style='font-size:9.5pt;
font-family:Consolas;color:green;background:white'>// FIX: membership is not
used here!</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; beforeT(*matched) &lt;&lt;
prefix_specifiers(*matched);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:green;background:white'>// NOTE: For some reason
currently virtual member functions are not marked with</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:green;background:white'>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; virtual specifier
on the Fundecl but instead with the virtual specifier</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:green;background:white'>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; on the first
parameter to account for later support of multi-methods.</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>if</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
(is_virtual_member_function(*matched) &amp;&amp;
is_in_class_declaration(*matched))</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *</span><span style='font-size:
9.5pt;font-family:Consolas;color:blue;background:white'>this</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
&lt;&lt; </span><span style='font-size:9.5pt;font-family:Consolas;color:#A31515;
background:white'>&quot;virtual &quot;</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:green;background:white'>// Evaluate declarator that
will be used to output the result type that can</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:green;background:white'>// be complicated as
function can return arrays or function pointers</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::string declarator =
get_declarator(*matched) + </span><span style='font-size:9.5pt;font-family:
Consolas;color:#A31515;background:white'>'('</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> + eval_params(parameters) +
</span><span style='font-size:9.5pt;font-family:Consolas;color:#A31515;
background:white'>')'</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:green;background:white'>// Prepend class name to the
name when declaration/definition is made outside</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:green;background:white'>// of class and refers to a
member function</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>const</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
ipr::Function* ft = ipr::util::view&lt;ipr::Function&gt;(type);&nbsp; </span><span
style='font-size:9.5pt;font-family:Consolas;color:green;background:white'>//
dynamic_cast alternative</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>assert</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>(ft);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:green;background:white'>// Print the name and return
type when applicable</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>if</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
(!ipr::is_constructor(*matched) &amp;&amp; !ipr::is_destructor(*matched)
&amp;&amp; !ipr::is_conversion(*matched))</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *</span><span style='font-size:
9.5pt;font-family:Consolas;color:blue;background:white'>this</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
&lt;&lt; eval_type(ft-&gt;target(), declarator);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>else</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *</span><span style='font-size:
9.5pt;font-family:Consolas;color:blue;background:white'>this</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
&lt;&lt; declarator;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:green;background:white'>// Check if this is a const
member function</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>if</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
(is_const_member_function(*matched))</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *</span><span style='font-size:
9.5pt;font-family:Consolas;color:blue;background:white'>this</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
&lt;&lt; </span><span style='font-size:9.5pt;font-family:Consolas;color:#A31515;
background:white'>&quot; const&quot;</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:green;background:white'>// Print throw specification
if the function has it</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>if</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
(!can_throw_everything(*ft)) </span><span style='font-size:9.5pt;font-family:
Consolas;color:green;background:white'>// we skip throw specification when any
exception can be thrown</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *</span><span style='font-size:
9.5pt;font-family:Consolas;color:blue;background:white'>this</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
&lt;&lt; </span><span style='font-size:9.5pt;font-family:Consolas;color:#A31515;
background:white'>&quot; throw(&quot;</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> +
eval_type(ft-&gt;throws()) + </span><span style='font-size:9.5pt;font-family:
Consolas;color:#A31515;background:white'>')'</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:green;background:white'>// Check if this is a pure
virtual function (abstract method)</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>if</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
(matched-&gt;specifiers() &amp; ipr::Decl::Pure)</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *</span><span style='font-size:
9.5pt;font-family:Consolas;color:blue;background:white'>this</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
&lt;&lt; </span><span style='font-size:9.5pt;font-family:Consolas;color:#A31515;
background:white'>&quot; = 0&quot;</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:green;background:white'>// Print body if present</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>if</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
(matched-&gt;has_initializer())</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style='font-size:
9.5pt;font-family:Consolas;color:blue;background:white'>const</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
ipr::Stmt* body = ipr::util::view&lt;ipr::Stmt&gt;(matched-&gt;initializer());</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:
9.5pt;font-family:Consolas;color:#6F008A;background:white'>assert</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>(body);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *</span><span style='font-size:
9.5pt;font-family:Consolas;color:blue;background:white'>this</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
&lt;&lt; *body;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>else</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *</span><span style='font-size:
9.5pt;font-family:Consolas;color:blue;background:white'>this</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
&lt;&lt; semicolon;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; after(*matched,</span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>true</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>); </span><span
style='font-size:9.5pt;font-family:Consolas;color:green;background:white'>//
Print comment after the function definition</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>Alias</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>,
name, type)</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; beforeT(*matched) &lt;&lt;
prefix_specifiers(*matched);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>assert</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>(matched-&gt;has_initializer());</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>const</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> ipr::Expr&amp;
init = matched-&gt;initializer();</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:
9.5pt;font-family:Consolas;color:green;background:white'>// This is the case
of: typedef T U;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>if</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> (</span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>const</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
ipr::Type* p = ipr::util::view&lt;ipr::Type&gt;(init))</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *</span><span style='font-size:
9.5pt;font-family:Consolas;color:blue;background:white'>this</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
&lt;&lt; eval_type(*p,eval_name(name)) &lt;&lt; </span><span style='font-size:
9.5pt;font-family:Consolas;color:#A31515;background:white'>';'</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>; </span><span
style='font-size:9.5pt;font-family:Consolas;color:green;background:white'>//
Since EDG front-end now sets up the Typedef specifier on ipr::Decl</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:
9.5pt;font-family:Consolas;color:blue;background:white'>return</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> *</span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>this</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:
9.5pt;font-family:Consolas;color:green;background:white'>// This is the case
of: namespace N = A::B::C::D;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>if</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> (</span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>const</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
ipr::Id_expr* id = ipr::util::view&lt;ipr::Id_expr&gt;(init))</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:
9.5pt;font-family:Consolas;color:blue;background:white'>if</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> (</span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>const</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
ipr::Typedecl* td = ipr::util::view&lt;ipr::Typedecl&gt;(id-&gt;resolution()))</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>if</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
(ipr::is_namespace(*td))</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *</span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>this</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
&lt;&lt; </span><span style='font-size:9.5pt;font-family:Consolas;color:#A31515;
background:white'>&quot;namespace &quot;</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> &lt;&lt; name &lt;&lt; </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>'='</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
&lt;&lt; id-&gt;name() &lt;&lt; </span><span style='font-size:9.5pt;font-family:
Consolas;color:#A31515;background:white'>';'</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>return</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> *</span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>this</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:
9.5pt;font-family:Consolas;color:green;background:white'>// This is the case
of: using namespace A::B::C::D;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>if</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> (</span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>const</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
ipr::Typedecl* d = ipr::util::view&lt;ipr::Typedecl&gt;(init))</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:
9.5pt;font-family:Consolas;color:blue;background:white'>if</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
(is_namespace(*d))</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *</span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>this</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
&lt;&lt; </span><span style='font-size:9.5pt;font-family:Consolas;color:#A31515;
background:white'>&quot;using namespace &quot;</span><span style='font-size:
9.5pt;font-family:Consolas;color:black;background:white'> &lt;&lt;
matched-&gt;initializer() &lt;&lt; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#A31515;background:white'>';'</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>return</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> *</span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>this</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *</span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>this</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
&lt;&lt; </span><span style='font-size:9.5pt;font-family:Consolas;color:#A31515;
background:white'>&quot;using &quot;</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> &lt;&lt;
get_declarator(*matched,</span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>true</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>) &lt;&lt; </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>';'</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; after(*matched);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>Bitfield</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>,
name, type, membership, precision) </span><span style='font-size:9.5pt;
font-family:Consolas;color:green;background:white'>// FIX: membership is not
used here!</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; beforeF(*matched) &lt;&lt;
prefix_specifiers(*matched) &lt;&lt; eval_type(type, eval_name(name)) &lt;&lt; </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>':'</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
&lt;&lt; precision;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>if</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
(matched-&gt;has_initializer())</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *</span><span style='font-size:
9.5pt;font-family:Consolas;color:blue;background:white'>this</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
&lt;&lt; </span><span style='font-size:9.5pt;font-family:Consolas;color:#A31515;
background:white'>&quot; = &quot;</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> &lt;&lt;
matched-&gt;initializer();</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *</span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>this</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
&lt;&lt; semicolon;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;after(*matched);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>Enumerator</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>,
name)</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; beforeF(*matched) &lt;&lt;
prefix_specifiers(*matched) &lt;&lt; name;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>if</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
(matched-&gt;has_initializer())</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *</span><span style='font-size:
9.5pt;font-family:Consolas;color:blue;background:white'>this</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
&lt;&lt; </span><span style='font-size:9.5pt;font-family:Consolas;color:#A31515;
background:white'>&quot; = &quot;</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> &lt;&lt;
matched-&gt;initializer();</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; after(*matched);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>Named_map</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>,
name, type, parameters, mapping) </span><span style='font-size:9.5pt;
font-family:Consolas;color:green;background:white'>// FIX: Only parameters is
used here</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>extern</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> </span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>bool</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
evaluate_map (</span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>const</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> ipr::Mapping&amp;, </span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>const</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
ipr::Named_map&amp;, cxx_printer&amp;);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>const</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
ipr::Decl::Specifier prefix_mask = ipr::Decl::AccessProtection</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
| ipr::Decl::StorageClass</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
| ipr::Decl::Friend</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
| ipr::Decl::Typedef</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
| ipr::Decl::Constexpr</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|
ipr::Decl::Export;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:green;background:white'>// Print comment before the
function definition</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; beforeT(*matched) &lt;&lt;
prefix_specifiers(*matched, prefix_mask);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; evaluate_map(mapping, *matched, *</span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>this</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; after(*matched,</span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>true</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>); </span><span
style='font-size:9.5pt;font-family:Consolas;color:green;background:white'>//
Print comment after the function definition</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>Decl</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>)</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::string declarator =
get_declarator(*matched); </span><span style='font-size:9.5pt;font-family:Consolas;
color:green;background:white'>//eval_name(matched-&gt;name());</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; beforeF(*matched) &lt;&lt;
prefix_specifiers(*matched) &lt;&lt; eval_type(matched-&gt;type(), declarator);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>if</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
(matched-&gt;has_initializer())</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *</span><span style='font-size:
9.5pt;font-family:Consolas;color:blue;background:white'>this</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
&lt;&lt; </span><span style='font-size:9.5pt;font-family:Consolas;color:#A31515;
background:white'>&quot; = &quot;</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> &lt;&lt;
matched-&gt;initializer();</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *</span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>this</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
&lt;&lt; semicolon;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; after(*matched);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>Expr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
*</span><span style='font-size:9.5pt;font-family:Consolas;color:blue;
background:white'>this</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'> &lt;&lt; *matched; </span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>; </span><span
style='font-size:9.5pt;font-family:Consolas;color:green;background:white'>//
TODO: Discuss why we had it in visitors!</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp; }</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>EndMatch</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>return</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> *</span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>this</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>}</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:green;background:white'>//------------------------------------------------------------------------------</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>cxx_printer&amp; cxx_printer::</span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>operator</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>&lt;&lt;(</span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>const</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
ipr::Udt&amp; udt)</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>{</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Match(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>udt)</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp; {</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>Global_scope</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>,
members) *</span><span style='font-size:9.5pt;font-family:Consolas;color:blue;
background:white'>this</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'> &lt;&lt; members; </span><span style='font-size:
9.5pt;font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>Namespace</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>,&nbsp;&nbsp;&nbsp;
members) *</span><span style='font-size:9.5pt;font-family:Consolas;color:blue;
background:white'>this</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'> &lt;&lt; indentation &lt;&lt; </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>'{'</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
&lt;&lt; increase &lt;&lt; members &lt;&lt; decrease &lt;&lt; indentation
&lt;&lt; </span><span style='font-size:9.5pt;font-family:Consolas;color:#A31515;
background:white'>'}'</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>; </span><span style='font-size:9.5pt;font-family:
Consolas;color:blue;background:white'>break</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>Class</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>,
members, bases)</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:green;background:white'>// Print base classes</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>if</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
(bases.size())</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *</span><span style='font-size:
9.5pt;font-family:Consolas;color:blue;background:white'>this</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
&lt;&lt; </span><span style='font-size:9.5pt;font-family:Consolas;color:#A31515;
background:white'>&quot; : &quot;</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:
9.5pt;font-family:Consolas;color:blue;background:white'>for</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
(ipr::Sequence&lt;ipr::Base_type&gt;::iterator p = bases.begin(); p !=
bases.end(); ++p)</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>if</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> (p
!= bases.begin())</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *</span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>this</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
&lt;&lt; </span><span style='font-size:9.5pt;font-family:Consolas;color:#A31515;
background:white'>&quot;, &quot;</span><span style='font-size:9.5pt;font-family:
Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *</span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>this</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
&lt;&lt; p-&gt;name();</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *</span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>this</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
&lt;&lt; indentation &lt;&lt; </span><span style='font-size:9.5pt;font-family:
Consolas;color:#A31515;background:white'>'{'</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> &lt;&lt; increase &lt;&lt;
members &lt;&lt; decrease &lt;&lt; indentation &lt;&lt; </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>'}'</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
&lt;&lt; semicolon;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>Union</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
members) *</span><span style='font-size:9.5pt;font-family:Consolas;color:blue;
background:white'>this</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'> &lt;&lt; indentation &lt;&lt; </span><span
style='font-size:9.5pt;font-family:Consolas;color:#A31515;background:white'>'{'</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
&lt;&lt; increase &lt;&lt; members &lt;&lt; decrease &lt;&lt; indentation
&lt;&lt; </span><span style='font-size:9.5pt;font-family:Consolas;color:#A31515;
background:white'>'}'</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'> &lt;&lt; semicolon; </span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>Enum</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
members)</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;{</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *</span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>this</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
&lt;&lt; indentation &lt;&lt; </span><span style='font-size:9.5pt;font-family:
Consolas;color:#A31515;background:white'>'{'</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> &lt;&lt; increase;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>for</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
(ipr::Sequence&lt;ipr::Enumerator&gt;::iterator p = members.begin(); p !=
members.end(); ++p)</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:
9.5pt;font-family:Consolas;color:blue;background:white'>if</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> (p
!= members.begin())</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *</span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>this</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
&lt;&lt; </span><span style='font-size:9.5pt;font-family:Consolas;color:#A31515;
background:white'>','</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *</span><span style='font-size:
9.5pt;font-family:Consolas;color:blue;background:white'>this</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
&lt;&lt; *p;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *</span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>this</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
&lt;&lt; decrease &lt;&lt; indentation &lt;&lt; </span><span style='font-size:
9.5pt;font-family:Consolas;color:#A31515;background:white'>'}'</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
&lt;&lt; semicolon;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp; }</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>EndMatch</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>return</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> *</span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>this</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>}</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:green;background:white'>//------------------------------------------------------------------------------</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>cxx_printer&amp; cxx_printer::</span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>operator</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>&lt;&lt;(</span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>const</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
ipr::Expr&amp; e)</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>{</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Match(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>e)</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp; {</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>Mapping</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>)</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>if</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
(ipr::util::node_has_member(*matched, &amp;ipr::Mapping::result))</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *</span><span style='font-size:
9.5pt;font-family:Consolas;color:blue;background:white'>this</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
&lt;&lt; matched-&gt;result();</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>else</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *</span><span style='font-size:
9.5pt;font-family:Consolas;color:blue;background:white'>this</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
&lt;&lt; </span><span style='font-size:9.5pt;font-family:Consolas;color:#A31515;
background:white'>';'</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>Overload</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>) </span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>Scope</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>,
decls)</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:green;background:white'>// Scope can be in place of
expression when expression is also a declaration</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:green;background:white'>// e.g. if (int i = foo())
{} or for (int i = 0, j = 0; ;);</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:green;background:white'>// This is a tricky case
because first we have to generate initializers and</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:green;background:white'>// then also compute the
operand that initializer resolves to as for example:</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:green;background:white'>// if (int i = 0, j = 1) ...</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>for</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
(ipr::Sequence&lt;ipr::Decl&gt;::iterator p = decls.begin(); p != decls.end();
++p)</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::string s = eval_decl(*p); </span><span
style='font-size:9.5pt;font-family:Consolas;color:green;background:white'>//
Evaluate declaration without trailing ;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:
9.5pt;font-family:Consolas;color:blue;background:white'>if</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> (p
!= decls.begin())</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *</span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>this</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
&lt;&lt; </span><span style='font-size:9.5pt;font-family:Consolas;color:#A31515;
background:white'>','</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *</span><span style='font-size:
9.5pt;font-family:Consolas;color:blue;background:white'>this</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
&lt;&lt; s;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>Classic</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>)&nbsp;&nbsp; *</span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>this</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
&lt;&lt; *matched; </span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>break</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>Name</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
*</span><span style='font-size:9.5pt;font-family:Consolas;color:blue;
background:white'>this</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'> &lt;&lt; *matched; </span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>Phantom</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>)&nbsp;&nbsp; </span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>Expr_list</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>,
operand) *</span><span style='font-size:9.5pt;font-family:Consolas;color:blue;
background:white'>this</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'> &lt;&lt; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#A31515;background:white'>'{'</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
&lt;&lt; eval_sqnc(operand) &lt;&lt; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#A31515;background:white'>'}'</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>; </span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>Label</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>)&nbsp;&nbsp;&nbsp;&nbsp;
</span><span style='font-size:9.5pt;font-family:Consolas;color:blue;background:
white'>break</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>Member_init</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>,
member, initializer) </span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:green;background:white'>// FIX: This is workaround
for now as it should become Expr_list statically</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>if</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> (</span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>const</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
ipr::Expr_list* p = ipr::util::view&lt;ipr::Expr_list&gt;(initializer))</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *</span><span style='font-size:
9.5pt;font-family:Consolas;color:blue;background:white'>this</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
&lt;&lt; member &lt;&lt; </span><span style='font-size:9.5pt;font-family:Consolas;
color:#A31515;background:white'>'('</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> &lt;&lt; eval_sqnc(p-&gt;elements())
&lt;&lt; </span><span style='font-size:9.5pt;font-family:Consolas;color:#A31515;
background:white'>')'</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>else</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *</span><span style='font-size:
9.5pt;font-family:Consolas;color:blue;background:white'>this</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
&lt;&lt; member &lt;&lt; </span><span style='font-size:9.5pt;font-family:Consolas;
color:#A31515;background:white'>'('</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> &lt;&lt; initializer
&lt;&lt; </span><span style='font-size:9.5pt;font-family:Consolas;color:#A31515;
background:white'>')'</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>; </span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:green;background:white'>// The following kinds of
nodes are not directly inherited from Expr so </span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:green;background:white'>// technically they
shouldn't be handled here. However they may happen in </span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:green;background:white'>// context were traditional
expressions are expected and those cases are</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:green;background:white'>// covered here.</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:green;background:white'>// Declaration might happen
in expression context when IPR refers to the use</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:green;background:white'>// of the name but whoever
generated IPR forgot to mark such use properly with</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:green;background:white'>// Id_expr and pointed
directly to the declaration instead.</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>Decl</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>,
name)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *</span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>this</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> &lt;&lt; name; </span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:green;background:white'>// Expr_stmt can happen in
the initializer of the following loop:</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:green;background:white'>// int i; for (i=1; i &lt;
10; i++)</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:green;background:white'>// because the scope won't
be introduced. It seems to be easier at the</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:green;background:white'>// moment to simply handle
this case here rather then all of the</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:green;background:white'>// cases of
ClassicExprPrintVisitor inside StatementPrintVisitor when</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:green;background:white'>// forwarding evaluation to
the initializer.</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>Expr_stmt</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>,
expr) *</span><span style='font-size:9.5pt;font-family:Consolas;color:blue;
background:white'>this</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'> &lt;&lt; expr; </span><span style='font-size:
9.5pt;font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:green;background:white'>// And this hack counter
measure the bugs introduced by the Udt hack below</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:green;background:white'>// as references to
Namespace should be just treated as names and not dumping</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:green;background:white'>// of their content that the
above hack will do.</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>Namespace</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
*</span><span style='font-size:9.5pt;font-family:Consolas;color:blue;
background:white'>this</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'> &lt;&lt; matched-&gt;name(); </span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:green;background:white'>// This shouldn't be here at
all, but it's a quick hack right now to handle</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:green;background:white'>// template class
definitions as mapping will forward here.</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>Udt</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
*</span><span style='font-size:9.5pt;font-family:Consolas;color:blue;
background:white'>this</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'> &lt;&lt; *matched; </span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>Type</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
*</span><span style='font-size:9.5pt;font-family:Consolas;color:blue;
background:white'>this</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'> &lt;&lt; *matched; </span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>Stmt</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
*</span><span style='font-size:9.5pt;font-family:Consolas;color:blue;
background:white'>this</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'> &lt;&lt; *matched; </span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp; }</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>EndMatch</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>return</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> *</span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>this</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>}</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:green;background:white'>//------------------------------------------------------------------------------</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>cxx_printer&amp; cxx_printer::</span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>operator</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>&lt;&lt;(</span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>const</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>
ipr::Node&amp; n)</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>{</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Match(</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>n)</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp; {</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>Unit</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>,
global_scope) *</span><span style='font-size:9.5pt;font-family:Consolas;
color:blue;background:white'>this</span><span style='font-size:9.5pt;
font-family:Consolas;color:black;background:white'> &lt;&lt; global_scope; </span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>; </span><span
style='font-size:9.5pt;font-family:Consolas;color:green;background:white'>//
This should forward to visitation of Global_scope, which is a Namespace</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>Udt</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;*</span><span style='font-size:9.5pt;font-family:Consolas;color:blue;
background:white'>this</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'> &lt;&lt; *matched; </span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>Decl</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
*</span><span style='font-size:9.5pt;font-family:Consolas;color:blue;
background:white'>this</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'> &lt;&lt; *matched; </span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>Stmt</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
*</span><span style='font-size:9.5pt;font-family:Consolas;color:blue;
background:white'>this</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'> &lt;&lt; *matched; </span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>Type</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
*</span><span style='font-size:9.5pt;font-family:Consolas;color:blue;
background:white'>this</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'> &lt;&lt; *matched; </span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>Name</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
*</span><span style='font-size:9.5pt;font-family:Consolas;color:blue;
background:white'>this</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'> &lt;&lt; *matched; </span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>Case(</span><span
style='font-size:9.5pt;font-family:Consolas;color:navy;background:white'>ipr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>::</span><span
style='font-size:9.5pt;font-family:Consolas;color:#2B91AF;background:white'>Expr</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
*</span><span style='font-size:9.5pt;font-family:Consolas;color:blue;
background:white'>this</span><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'> &lt;&lt; *matched; </span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>break</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp; }</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:#6F008A;background:white'>EndMatch</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;&nbsp;&nbsp; </span><span style='font-size:9.5pt;
font-family:Consolas;color:blue;background:white'>return</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'> *</span><span
style='font-size:9.5pt;font-family:Consolas;color:blue;background:white'>this</span><span
style='font-size:9.5pt;font-family:Consolas;color:black;background:white'>;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>}</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:green;background:white'>//------------------------------------------------------------------------------</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>&nbsp;</span></p>

<p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
normal;text-autospace:none'><span style='font-size:9.5pt;font-family:Consolas;
color:black;background:white'>} </span><span style='font-size:9.5pt;font-family:
Consolas;color:green;background:white'>// of namespace cxxm</span></p>

<p class=MsoNormal>&nbsp;</p>

</div>

</body>

</html>
